const { app, BrowserWindow, Menu } = require('electron')

const fs = require('fs')
const path = require('path')
const dayjs = require('dayjs')
// 保持对window对象的全局引用，如果不这么做的话，当JavaScript对象被
// 垃圾回收的时候，window对象将会自动的关闭
let win
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true'

function createWindow() {
    // Menu.setApplicationMenu(null)
    // 创建浏览器窗口。
    win = new BrowserWindow({
        // fullscreen: true,
        // frame: false,
        width: 1366,
        height: 768,
        show: false,
        webPreferences: {
            nodeIntegration: true
        }
    })

    win.maximize()
    // 加载index.html文件
    win.loadFile('index.html')
    // 打开开发者工具
    if (process.env.NODE_ENV === 'development') {
        win.webContents.openDevTools()
    }

    // win.webContents.on('did-finish-load', function() {
    //     win.webContents.insertCSS(fs.readFileSync('./css/index.css').toString())
    // })
    win.on('ready-to-show', () => {
        win.show()
    })
    // 当 window 被关闭，这个事件会被触发。
    win.on('closed', () => {
        // 取消引用 window 对象，如果你的应用支持多窗口的话，
        // 通常会把多个 window 对象存放在一个数组里面，
        // 与此同时，你应该删除相应的元素。
        win = null
    })
}

// Electron 会在初始化后并准备
// 创建浏览器窗口时，调用这个函数。
// 部分 API 在 ready 事件触发后才能使用。
app.on('ready', () => {
    createWindow()
    const schedule = require('node-schedule')

    const scheduleCronstyle = () => {
        //每分钟的第5秒定时执行一次:
        schedule.scheduleJob('0 0 3 * * *', () => {
            fs.readdir('./图片', function(err, files) {
                if (err) {
                    console.error(err)
                    return
                }
                files.forEach(filename => {
                    let pathname = path.join('./图片', filename)
                    fs.stat(pathname, (err, stats) => {
                        // 读取文件信息
                        if (err) {
                            console.log('获取文件stats失败')
                            return
                        }
                        // console.log(dayjs().format('YYYY-MM-DD HH:mm:ss'), filename, stats.birthtime, dayjs().diff(dayjs(stats.birthtime)))
                        if (stats.isFile()) {
                            if (dayjs().diff(dayjs(stats.birthtime)) > 30 * 24 * 3600 * 1000) {
                                fs.unlink(pathname, err => {
                                    if (err) {
                                        console.error('删除文件失败', err)
                                        return
                                    }
                                })
                            }
                        }
                    })
                })
            })
        })
    }

    scheduleCronstyle()
})

// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
    // 在 macOS 上，除非用户用 Cmd + Q 确定地退出，
    // 否则绝大部分应用及其菜单栏会保持激活。
    if (process.platform !== 'darwin') {
        app.quit()
    }
})

app.on('activate', () => {
    // 在macOS上，当单击dock图标并且没有其他窗口打开时，
    // 通常在应用程序中重新创建一个窗口。
    if (win === null) {
        createWindow()
    }
})

// 在这个文件中，你可以续写应用剩下主进程代码。
// 也可以拆分成几个文件，然后用 require 导入。
